#!/usr/bin/env python
# encoding: utf-8
# @author: Lin Han
# @contact: voldemort22@126.com
# @file: deprecated_app.py
# @time: 2021/3/23 18:22
# @desc:
from typing import Dict

from fastapi import APIRouter

from utils.mongo_tools import update_mongo_value
from views.configs import *

message_queue_router = APIRouter(
    prefix="/message_queue",
    tags=["message_queue"],
)

type_mapping = {
    "1": "history_clamp",
    "2": "history_part",
    "3": "standard_clamp",
    "4": "standard_part",
    "5": "parameter_model",
}


@message_queue_router.put("/v1/update_data")
async def update_data_after_message_queue(input_data: Dict):
    """
    消息队列的消费者处理完数据后，把更新的数据通过这个接口返回，我将其更新到数据库上。
    TODO: 除了更新到mongo上，也要更新到redis上。

    - :param input_data: 目前是字典数据，将为可以替换为BaseModel子类。
    """
    print(f"收到耿晨洋返回来的数据，number为{input_data['number']}", input_data)
    # if input_data["isTemporary"] is None or input_data["isTemporary"] == False:
    if "isTemporary" not in input_data.keys() or input_data["isTemporary"] == False:
        filter_condition = {"number": input_data["number"]}
        update_mongo_value(
            filter_condition,
            {"$set": input_data},
            database_name=MONGO_DATABASE_NAME,
            collection_name=type_mapping[input_data["type"]],
        )
    # 如果有isTemporary这个字段且为True的话，表明这是临时转化数据用的，不要存到数据库里
    else:
        pass
